import java.util.HashMap;
import java.util.Map;

public class LeetCode16_15 {
    public int[] masterMind(String solution, String guess) {
        // 计算红钉和白钉的数量
        int redPegs = 0;
        int whitePegs = 0;

        // 用于追踪未匹配的颜色及其数量
        HashMap<Character, Integer> solutionMap = new HashMap<>();
        HashMap<Character, Integer> guessMap = new HashMap<>();

        // 首先计算红钉，并记录未匹配的颜色
        for (int i = 0; i < solution.length(); i++) {
            char sChar = solution.charAt(i);
            char gChar = guess.charAt(i);

            if (sChar == gChar) {
                redPegs++;
            } else {
                // 更新未匹配的颜色计数
                solutionMap.put(sChar, solutionMap.getOrDefault(sChar, 0) + 1);
                guessMap.put(gChar, guessMap.getOrDefault(gChar, 0) + 1);
            }
        }

        // 计算白钉
        for (char key : guessMap.keySet()) {
            if (solutionMap.containsKey(key)) {
                //如果存在，则取该颜色在两个映射中出现次数的最小值，并加到whitePegs上。
                whitePegs += Math.min(solutionMap.get(key), guessMap.get(key));
            }
        }

        return new int[]{redPegs, whitePegs};
    }
}
